#ifndef OPTSEMAPHORE_H
#define OPTSEMAPHORE_H
typedef struct semaphore* semaphore_t;

/* cree et initialise un semaphore
 */
struct optsemaphore * init_optsemaphore(unsigned int size);

/* libere la memoire du semaphore */
void free_optsemaphore(struct optsemaphore * sem);

/* Le thread essaie de déverrouiller le semaphore
 * Cet appel est bloquant si le sémaphore a atteint
 * sa cappacité
 */
void wait_optsemaphore(struct optsemaphore * sem);

/* Libere le semaphore d'un thread
 */
void post_optsemaphore(struct optsemaphore * sem);

#endif//OPTSEMAPHORE
